자바스크립트 딥다이브
7 posts
함수

함수 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의 한 것 함수또한 값이며 여러개 존재 할 수 있으므로 함수를 구별하기위해 식별자인 함수이름을 사용할 수 있다 식별자 네이밍을 통해 함수 내부의 코드를 이해하지 않고도 함수의 역할을 파악할 수 있다 (코드의 가독성을 높임) 함수는 몇번이든 재 호출 할 수 있기 때문에 코드의 재사용성 측면에서 뛰어나고 그로인해 유지보수와 코드의 신뢰성 향상을 높이는 효과가 있음 함수 리터럴 함수 리터럴에서 함수 이름은 함수 몸체에서만 참조 할 수 있는 식별자임 함수 정의 함수 선언문 함수 선언문은 함수 이름을 생략 할 수 없음 표현식이 아닌 문이기 때문에 콘솔에서 함수 선언문 실행 시 undefined를 출력함 자바스크립트 엔진은 함수 선언문을 해석해 함수를 할당할 함수의 이름과 동일한 식별자를 생성하고 거기에 생성된 함수객체를 할당한다 이로 인해 함수 선언문은 식별자에 할당되지 않았음에도 호출할 수 있다. 함수 표현식 …

July 15, 2023
자바스크립트 딥다이브
객체

객체 자바스크립트를 구성하고있는 거의 모든 것이 객체 변경가능한 값 프로퍼티: 객체의 상태를 나타내는 값 메서드: 프로퍼티를 참조하고 조작할 수 있는 동작 객체 리터럴에 의한 객체 생성 자바스크립트는 프로토타입 기반 객체지향 언어로서 다양한 객체 생성 방법을 지원 객체 리터럴 (앞 서 보인 코드가 객체리터럴로 생성한 객체) Object 생성자 함수 생성자 함수 Object.create 메서드 클래스(ES6) 프로퍼티 객체는 프로퍼티의 집합이며, 프로퍼티는 키와 값으로 구성됨 프로퍼티의 나열은 쉼표로 구분함 프로퍼티 키: 빈 문자열을 포함하는 모든 문자열 또는 심벌 값 프로퍼티 값: 자바스크립트에서 사용할 수 있는 모든 값 문자열 또는 문자열로 평가할 수 있는 표현식을 통해 프로퍼티키를 동적으로 생성할 수도 참조할 수 도 있음 프로퍼티 키에 문자열, 심벌 값 외의 값을 사용하면 암묵적 타입변환으로 인해 문자열이 됨 이미 존재하는 프로퍼티 키를 중복 선언하면 나중에 선언한 프로퍼티가 …

July 14, 2023
자바스크립트 딥다이브
타입 변환과 단축 평가

타입 변환과 단축 평가 타입 변환이란? 명시적 타입변환(타입 캐스팅): 개발자가 의도적으로 값의 타입을 변경하는 것을 의미 암묵적 타입변환(타입 강제 변환): 개발자의 의도와 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 변환되는 것을 의미 암묵적 타입 변환 자바스크립트 엔진에 의한 암묵적 타입변환이 발생하는 경우 원시 타입중 하나로 타입을 자동 변환함 문자열 타입으로 변환 숫자 타입으로 변환 산술연산자의 모든 피연산자는 코드 문맥상 모두 숫자 타입이어야만 숫자 값을 만들 수 있기 때문에 숫자타입이 아닌 피연산자의 경우 암묵적으로 숫자 타입으로 타입변환을 한다. 불리언 타입으로 변환 자바스크립트 엔진은 불리언 타입이 아닌 값을 Truthy값(참으로 평가되는 값) 또는 Falsy값(거짓으로 평가되는 값) 으로 구분한다. Falsy값 false undefined null 0, -0 NaN ”(빈 문자열) 명시적 타입 변환 표준 빌트인 생성자 함수(String, Number, Bo…

July 14, 2023
자바스크립트 딥다이브
연산자

연산자 피연산자를 연산하여 새로운 값을 만들어 줌 산술 연산자 이항 산술 연산자 2개의 피연산자를 연산하여 숫자 값을 만듦 피연산자의 값을 바꾸지 않고 언제나 새로운 값을 만듬 (부수효과 sideEffect가 발생하지 않음) 단항 산술 연산자 1개의 피연산자를 연산하여 숫자 값을 만듦 증가/감소 연산자는 부수효과가 발생함 문자열 연결 연산자 +연산자를 통해 서로 다른 데이터 타입을 연산할 경우 자바스크립트 엔진이 암묵적으로 타입을 자동 변환 시킴 (암묵적 타입변환 또는 타입 강제 변환) 할당 연산자 우항의 값을 좌항의 변수에 할당(부수효과 발생) 비교 연산자 좌항과 우항의 피연산자를 비교한 다음 불리언 값을 반환 동등 비교 연산자 동등 비교 : 값만을 비교하며, == 는 긍정, != 는 부정 동등 비교 연산자는 좌항, 우항의 피연산자를 비교하기 전에 암묵적 타입 변환을 통해 타입을 일치시키고 값을 비교 일치 비교 : 값과 타입을 비교하며 === 는 긍정, !== 는 부정 일치 …

July 14, 2023
자바스크립트 딥다이브
데이터 타입

원시타입과 객체 타입 Number, String, Boolean, undefined, null, Symbol은 원시 타입입니다. 그 외는 객체 타입(Object, Array) 원시타입은 변경불가능(immutable)한 값 이며 객체타입은 변경 가능한(mutable) 값이다. 원시 값을 변수에 할당하면 메모리에 실제 값이 저장되며 객체를 변수에 할당하면 참조 값이 저장됨 원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시값이 복사되어 전달(값에 의한 전달) 객체 값을 갖는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달(참조에 의한 전달) 원시 값은 변경 불가능하다? 변수의 값을 변경하지 못하는 것이 아니라 원시 값 자체를 변경할 수 없다는 의미 아래 이미지는 원시 값을 가지는 변수에 값을 재할당하는 경우 메모리에서 발생하는 현상을 그림으로 표현한 것이다. 변수의 값을 다른 변수에 할당할 때는 아래와 같이 동작한다 값의 이러한 특성을 불변성이라고 함 문자열의 경…

July 13, 2023
자바스크립트 딥다이브
변수, 표현식과 문

변수 변수의 정의는 아래와 같다 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별해 붙인 이름 메모리 공간에 저장된 값을 식별할 수 있는 이름을 변수명 이라고 하며 변수에 저장된 값은 변수값이 된다. 식별자 변수, 함수, 클래스 등의 이름으로 지칭한 것 값이 아니라 메모리 주소를 기억하고 있음 변수 이름으로는 메모리상의 변수 값을 식별할 수 있고 함수 명으로는 함수(자바스크립트에서 함수는 값)를 식별할 수 있음 식별자 네이밍 규칙 특수문자를 제외한 문자, 숫자 언더스코어(_), 달러 기호($)를 포함할 수 있음 단, 특수문자를 제외한 문자, 언더스코어, 달러 기호로 시작해야함, 숫자로의 시작은 허용되지 않음 예약어는 식별자로 사용할 수 없음 변수 선언 값을 저장하기 위한 메모리 공간을 확보하고 변수명과 확보된 메모리 공간의 주소를 연결해서 값을 저장 할 수 있게 준비하는 것 var, let, const 키워드를 사용하여 선언함 let, const 키워…

July 12, 2023
자바스크립트 딥다이브
자바스크립트 란

자바스크립트의 특징 웹 브라우저에서 동작하는 유일한 프로그래밍 언어 기본 문법은 C, JAVA와 유사하며 Self로 부터 프로토타입 기반 상속을 Scheme으로 부터 일급함수의 개념을 차용 개발자가 별도의 컴파일을 수행하지 않는 인터프리터 언어 모던 자바스크립트 엔진은 인터프리터와 컴파일러의 장점을 합쳐 인터프리터의 단점(비교적 처리속도가 느림)을 해결 전통적인 컴파일러와 같은 컴파일 과정을 거치지는 않지만 복잡한 과정을 통해 일부 소스코드를 컴파일하고 실행 자바스크립트는 명령형, 함수형, 프로토 타입 기반 객체 지향을 지원하는 멀티 패러다임 프로그래밍 언어 인터프리터와 컴파일러 컴파일러 인터프리터 컴파일 단계에 소스코드 전체를 한번에 머신코드로 변환한 후 실행 런타임에 문 단위로 한줄 씩 중간코드인 바이트 코드로 변환 한 후 실행 실행파일을 생성함 실행파일을 생성하지 않음 컴파일 단계와 실행단계가 분리되어 있음명시적인 컴파일 단계 이후 명시적으로 실행파일을 실행 인터프리트 단계와…

July 12, 2023
자바스크립트 딥다이브